const {router} = require('../../lib/system')
const koa_body = require('koa-body')
const path = require('path')
const fs = require('fs')
const moment = require('moment')
const { dirname } = require('path')

// 图片分类列表
router.get('/class/list', async (ctx) => {
    let data = '';
    // 查询语句
    let sql = 'SELECT * FROM image_class ORDER BY id DESC';
    //  let total_sql = 'SELECT count(*) as total FROM article_list ';
    await ctx.pool.query(sql).then(res => {
        data = res
    })
    ctx.success(data)
})

// 添加新图片分类
router.post('/class/add', async (ctx) => {
    let name = ctx.request.body.params.name;
    // 查询是否已经存在
    let sql = 'SELECT name FROM image_class WHERE name=' + name;
    await ctx.pool.query(sql).then(res => {
        data = res
    })
    if (data.length > 0 ) {
        ctx.fail('重名了，换个吧。')
        return
    }
    // 添加一条新的数据
    let sqls = 'INSERT INTO image_class(name) VALUES(?)'
    await ctx.pool.query(sqls,name).then((res) => {
        ctx.success({
            id:res.insertId,
            title:'图片分类添加成功！'
        })
    })

})
// 删除图片分类
router.post('/class/delete', async (ctx) => {
    console.log('%c'+'ctx','color:#00f',':',ctx);
    let id = ctx.request.body.params.id;
    console.log('%c'+'delete','color:#00f',':',id);
    let sql = 'DELETE FROM image_class WHERE id=?'
    await ctx.pool.query(sql,id).then((res) => {
    })
    ctx.success('删除成功！')
})
// 修改图片分类名称
router.post('/class/edit', async (ctx) => {
    let d = ctx.request.body.params;
    let sql_select = 'SELECT name FROM image_class WHERE id=?'
    await ctx.pool.query(sql_select,d.id).then((res) => {
        if(!res){
            ctx.fail('分类早已不在！')
        } 
    })
    await ctx.pool.query('UPDATE image_class SET name=? WHERE id=?',[d.name,d.id]).then((res) => {
        console.log('update',res); 
        if(!res){
            ctx.fail('修改失败，等会儿吧。')
        }  
    })
    ctx.success('分类名儿改好了。')
})
router.post('/update',
    koa_body({
        multipart: true, // 支持多文件上传
        encoding: "gzip", // 编码格式
        formidable: {
        uploadDir: path.join(__dirname, "../public/img/"), // 设置文件上传目录
        keepExtensions: true, // 保持文件的后缀
        maxFieldsSize: 2 * 1024 * 1024, // 文件上传大小限制
        onFileBegin: (name, file) => {
            // 无论是多文件还是单文件上传都会重复调用此函数
            // 最终要保存到的文件夹目录
            console.log('onFile',':',name,file);
            // 定义今日文件夹名称
            let dirName = moment(Date.now()).format("yyyyMMDD");
            // 今日文件夹存储目录
            let dir = path.join(__dirname, `../../public/img/${dirName}`);
            // 检查文件夹是否存在如果不存在则新建文件夹
            let is_dir = fs.existsSync(dir)
            // 判断今日的文件夹是否存在
            if (!is_dir) {
                console.log('dir',':',dir);
                fs.mkdirSync(dir)
            }
            // 文件名称编码
            let fileName = encodeURI(file.name)
            let file_dir_path = `${dir}/2161652134631222222132.jpg`
            // 修改后的名字保存
            file.name = fileName;
            // 覆盖文件存放的完整路径(保留原始名称)
            file.path = file_dir_path;
        },
        onError: (error) => {
            app.status = 400;
            log4js.error(error);
            // 这里可以定义自己的返回内容
            app.body = { code: 400, msg: "上传失败", data: {} };
            return;
        },
        },
    }),

    async (ctx) => {
        let d = ctx.request;
        console.log('%c'+'update','color:#00f',':',d.body,d.files);
        console.log('%c'+'====================================','color:#00f',':',);
        ctx.success('上传成功')
    }
)

module.exports = router